pub fn convert_base(num_str: &str, to_base: u32) -> String {
    // 提取原数值和进制
    let parts: Vec<&str> = num_str.split('(').collect();
    if parts.len() != 2 || !parts[1].ends_with(')') {
        panic!("Invalid format: {}", num_str);
    }
    let number = parts[0];
    let from_base: u32 = parts[1][..parts[1].len() - 1].parse().expect("Invalid base");

    // 将数值从原进制转换为十进制
    let decimal_value = u32::from_str_radix(number, from_base).expect("Invalid number");

    // 特殊情况：目标进制为10，直接返回十进制字符串
    if to_base == 10 {
        return decimal_value.to_string();
    }

    // 将十进制数值转换为目标进制
    let mut result = String::new();
    let mut value = decimal_value;
    while value > 0 {
        let remainder = value % to_base;
        // 如果余数大于9，用字母表示 (如 10 -> a, 11 -> b, ...)
        let char = if remainder < 10 {
            (b'0' + remainder as u8) as char
        } else {
            (b'a' + (remainder - 10) as u8) as char
        };
        result.push(char);
        value /= to_base;
    }

    // 结果需要反转，因为最低位是最后得到的
    if result.is_empty() {
        result.push('0'); // 如果值为0，返回"0"
    } else {
        result = result.chars().rev().collect();
    }

    result
}

